﻿#region Using



#endregion

namespace Vk.Methods.Messages
{
    /// <summary>
    ///     Тип сообщения
    /// </summary>
    public enum MessageType
    {
        /// <summary>
        ///     Входящее
        /// </summary>
        Incoming = 0,

        /// <summary>
        ///     Исходящее
        /// </summary>
        Outgoing = 1,

        /// <summary>
        ///     Спам
        /// </summary>
        Spam = 2,

        /// <summary>
        ///     История
        /// </summary>
        History,

        /// <summary>
        ///     С диалогов
        /// </summary>
        Dialogs
    }

    /// <summary>
    ///     Состояние сообщения
    /// </summary>
    public enum MessageState
    {
        /// <summary>
        ///     Прочитанное
        /// </summary>
        Read = 1,

        /// <summary>
        ///     Непрочитанное
        /// </summary>
        Unread = 0
    }

    /// <summary>
    ///     Фильтр сообщений
    /// </summary>
    public enum MessageFilter
    {
        /// <summary>
        ///     Только непрочитанные. С версии 5.10 игнорируется.
        /// </summary>
        OnlyUnread = 1,

        /// <summary>
        ///     Не из чата. С версии 5.10 игнорируется.
        /// </summary>
        NotFromChat = 2,

        /// <summary>
        ///     Только от друзей. С версии 5.10 игнорируется.
        /// </summary>
        OnlyFromFriends = 4,

        /// <summary>
        ///     Важные сообщения
        /// </summary>
        ImportantMessages = 8
    }

    /// <summary>
    ///     Тип отправки сообщения
    /// </summary>
    public enum SendMessageType
    {
        /// <summary>
        ///     Обычное сообщение
        /// </summary>
        StandardMessage = 0,

        /// <summary>
        ///     Из чата
        /// </summary>
        FromChat = 1
    }

    /// <summary>
    ///     Сообщение
    /// </summary>
    public class Message : ForwardedMessage
    {
        /// <summary>
        ///     Идентификатор сообщения (не возвращается для пересланных сообщений)
        /// </summary>
        public int? Id { get; set; }

        /// <summary>
        ///     Статус прочтения
        /// </summary>
        public MessageState? ReadState { get; set; }

        /// <summary>
        ///     Тип сообщения
        /// </summary>
        public MessageType? Out { get; set; }

        public Message(ApiNode node, bool isHistoryMessage = false) : base(node)
        {
            Id = node.Int("id");
            ReadState = (MessageState?) node.Int("read_state");
            Out = (MessageType?) node.Int("out");
            if (isHistoryMessage)
            {
                UserId = node.Int("from_id");
            }
        }
    }
}